---
title: JavaScript
description: Learn more about JavaScript in Turbopack.
---

import { Callout } from '#/components/callout';

## ECMAScript Support

Turbopack uses [SWC](https://swc.rs/) to bundle JavaScript and TypeScript files. So, we match SWC's support for ECMAScript versions - anything that SWC supports, Turbopack will support.

This means that by default **we support all syntax in ESNext**.

## Browserslist

[Browserslist](https://github.com/browserslist/browserslist) has become an industry standard for defining which browsers you plan to target. To make use of it, you can add a `browserslist` field to your `package.json`:

```json title="package.json"
{
  "browserslist": ["last 1 version", "> 1%", "not dead"]
}
```

Turbopack supports Browserslist **out-of-the-box**. We pass the information we find in your `package.json` to SWC, which handles [`browserslist` support](https://swc.rs/docs/configuration/supported-browsers) for us.

This means you can feel comfortable using Turbopack to target legacy browsers, or deciding to only ship code to modern browsers.

<Callout type="info">
  Turbopack is available in beta preview with a dev server, which uses a pre-set
  minimal browserslist to minimize transformation during development. In a
  future release, Turbopack will build apps for production targeting your
  defined browserslist.
</Callout>

## Babel

[Babel](https://babel.dev/) allows you to add custom transformations to your code to provide custom syntax, including support for early language proposals.

Babel plugins are currently **not supported** on Turbopack. In our default configuration, we don't use Babel to compile JavaScript or TypeScript code.

In the future, Babel support will be provided via plugins.
